#ifndef _COMMON_H_
#define _COMMON_H_


#include <sys/socket.h>
#include <netinet/in.h>
#include <sys/select.h>
#include <time.h>

#include<stdio.h>      /*标准输入输出定义*/ 
#include<stdlib.h>     /*标准函数库定义*/  
#include<unistd.h>     /*Unix 标准函数定义*/  
#include<sys/types.h>   
#include<sys/stat.h>     
#include<fcntl.h>      /*文件控制定义*/  
#include<termios.h>    /*PPSIX 终端控制定义*/  
#include<errno.h>      /*错误号定义*/  
#include<string.h> 
#include <assert.h>

#include <poll.h>
#include <sys/ioctl.h>


#define SIZE 100
#define SPORT 10010
#define IP   "192.168.1.250"


typedef struct s_msg
{
	char cmd;//enum e_cmd
	char fileName[SIZE];
}S_MSG;

/*初始化socket  创建socket, bind, listen*/
int socketInit(const char * ip, unsigned short port, int listenNum);
/*接受客户端的连接，更新tmpFds，更新maxFd*/
int getLink(int socketID, fd_set * tmpFds, int * maxFd);
/*处理客户端的消息，如果客户端断开连接，需要更新tmpFds*/
int doClientProcess(int newID, fd_set * tmpFds );
/*下载文件，先传文件大小，再传文件正文内容*/
int download(const char * fileName, int newID);

/*与服务器通信*/
int communicateToServer(int socketID);
/*接收下载文件，先接收文件大小，再接收文件正文内容*/
int recvDownloadFile(const char * fileName, int socketID);

void init_tty(int fd);

int dofeng_on(char cmd, int fd);

int doRead(int fd, int newID, fd_set * tmpFds);
#endif // _COMMON_H_